/**
 * 
 */
package sources;

import java.util.List;

import constrain.Constraint;

/**
 * @author Kyniek
 *
 */
public interface ISource
{
	//stałe
	String resource = "BatisConf.xml";
	
	

	/**
	 * Typ docelowy dla tabeli w bazie danych
	 * @param typeName
	 */
	public void setDataType(String typeName);
	
	
	/**
	 * Zwraca docelowy typ dla kolumny w tabeli docelowej bazy danych
	 * @return
	 */
	public String getDataType();
	
	
	/**
	 * Constraint w bazie danych jest elementem określającym typ
	 * @param con
	 */
	public void setConstraint(Constraint con);
	
	
	/**
	 * umozliwia dodawanie wielu constraintów dla jednego źrócła
	 * @param con
	 */
	public void setConstraint(List<Constraint> con);
	
	
	
	/**
	 * gwarantuje dostęp do właściwości constraint
	 * @return
	 */
	public List<Constraint> getConstraint();
	
	
	/**
	 * Nazwa źródła jest również nazwą kolumny w bazie danych
	 * @param name
	 */
	public abstract void setName(String name);
	
	
	/**
	 * zwraca nazwę źródła - nazwę kolumny, kolumna musi być unikalna w ramach tabeli
	 * @return
	 */
	public abstract String getName();
	
	/**
	 * Nazwa unikalna potrzebna do identyfikacji źródła
	 * @param name
	 */
	public void setUniqueName(String name);
	
	
	
	/**
	 * Zwraca unikalną nazwę źródła
	 * @return
	 */
	public String getUniqueName();
	
	
	/**
	 * Każdy typ danych w bazie danych można przedstawić jako String
	 * @return
	 */
	public Object get();
	
	
	public Object[] get(int dataSize);
	
	public String generateDeclaration();
}


/**
 * TODO :
 * dodać stałe dla mybatisa
 * 
 * źródło plikowe proste wczytujące z pliku i zwracające losową wartość lub listę losowych wartości
 */
